package com.ruoyi.swPro.swPro.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.templateFile.domain.TemplateFile;
import com.ruoyi.templateFile.mapper.TemplateFileMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.swPro.swPro.domain.SwProTemplatefile;
import com.ruoyi.swPro.swPro.mapper.SwProMapper;
import com.ruoyi.swPro.swPro.domain.SwPro;
import com.ruoyi.swPro.swPro.service.ISwProService;

/**
 * sw产品Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-04-12
 */
@Service
public class SwProServiceImpl implements ISwProService 
{
    @Autowired
    private SwProMapper swProMapper;
    @Autowired
    private TemplateFileMapper templatefileMapper;

    /**
     * 查询sw产品
     * 
     * @param id sw产品主键
     * @return sw产品
     */
    @Override
    public SwPro selectSwProById(Long id)
    {

        SwPro swPro = swProMapper.selectSwProById(id);
        List<SwProTemplatefile> list = swProMapper.getTemplateFileListById(id);
        //循环list
        for (SwProTemplatefile s : list) {
            if (s.getTemplateId() != null){
                Long templateId = s.getTemplateId();
                TemplateFile templateFile = templatefileMapper.selectTemplateFileById(templateId);
                s.setFileName(templateFile.getFileName());
                s.setFilePath(templateFile.getFilePath());
            }

        }
        swPro.setSwProTemplatefileList(list);
        System.out.println(list);
        return swPro;



    }

    /**
     * 查询sw产品列表
     * 
     * @param swPro sw产品
     * @return sw产品
     */
    @Override
    public List<SwPro> selectSwProList(SwPro swPro)
    {
        return swProMapper.selectSwProList(swPro);
    }

    /**
     * 新增sw产品
     * 
     * @param swPro sw产品
     * @return 结果
     */
    @Transactional
    @Override
    public int insertSwPro(SwPro swPro)
    {
        swPro.setCreateTime(DateUtils.getNowDate());
        int rows = swProMapper.insertSwPro(swPro);
        insertSwProTemplatefile(swPro);
        return rows;
    }

    /**
     * 修改sw产品
     * 
     * @param swPro sw产品
     * @return 结果
     */
    @Transactional
    @Override
    public int updateSwPro(SwPro swPro)
    {
        swPro.setUpdateTime(DateUtils.getNowDate());
        swProMapper.deleteSwProTemplatefileBySwProId(swPro.getId());
        insertSwProTemplatefile(swPro);
        return swProMapper.updateSwPro(swPro);
    }

    /**
     * 批量删除sw产品
     * 
     * @param ids 需要删除的sw产品主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteSwProByIds(Long[] ids)
    {
        swProMapper.deleteSwProTemplatefileBySwProIds(ids);
        return swProMapper.deleteSwProByIds(ids);
    }

    /**
     * 删除sw产品信息
     * 
     * @param id sw产品主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteSwProById(Long id)
    {
        swProMapper.deleteSwProTemplatefileBySwProId(id);
        return swProMapper.deleteSwProById(id);
    }

    /**
     * 新增sw产品和模板中间信息
     * 
     * @param swPro sw产品对象
     */
    public void insertSwProTemplatefile(SwPro swPro)
    {
        List<SwProTemplatefile> swProTemplatefileList = swPro.getSwProTemplatefileList();
        Long id = swPro.getId();
        if (StringUtils.isNotNull(swProTemplatefileList))
        {
            List<SwProTemplatefile> list = new ArrayList<SwProTemplatefile>();
            for (SwProTemplatefile swProTemplatefile : swProTemplatefileList)
            {
                swProTemplatefile.setSwProId(id);
                list.add(swProTemplatefile);
            }
            if (list.size() > 0)
            {
                swProMapper.batchSwProTemplatefile(list);
            }
        }
    }
}
